/**
 * @author 侯非
 * @date 4月6日
 * @class JobChangeFormPanel
 * @extends Ext.form.FormPanel
 * @description 员工调动表单
 */
JobChangeFormPanel = Ext.extend(Ext.form.FormPanel, {
	myid : "default", // 唯一id
	comboStoreGs : null, // 下拉列表框数据源(公司名称)
	comboStoreBm : null, // 下拉列表框数据源(部门名称)
	comboStoreJob : null, // 下拉列表框数据源(职位名称)
	comboStoreMoneyStandard : null, // 下拉列表框数据源(薪酬标准)
	/**
	 * 构造方法
	 */
	constructor : function(_config) {
		if (_config == null) {
			_config = {};
		}
		Ext.apply(this, _config);
		// 下拉列表框数据源(公司名称)
		this.comboStoreGs = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "公司名称"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(部门名称)
		this.comboStoreBm = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "部门"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(职位名称)
		this.comboStoreJob = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "职位"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(薪酬标准)
		this.comboStoreMoneyStandard = new Ext.data.JsonStore({
					url : "moneyStandard.do?operator=showMoneyInfo", // 服务端地址
					baseParams : {
						condition : "通过审核"
					},
					autoLoad : true,
					// 数据解析
					fields : ["miId", "miStandardId", "miStandardName",
							"miCountMoney"]
				});
		/**
		 * 拷贝父类的构造
		 */
		JobChangeFormPanel.superclass.constructor.call(this, {
			id : this.myid,
			bodyStyle : "backgroundColor:#DFE8F6;padding:10px;",
			autoScroll : true,
			border : false,
			items : [{
						xtype : "fieldset",
						title : "员工基本信息",
						layout : "column",
						autoHeight : true,
						items : [{
									columnWidth : .33,
									layout : "form",
									labelWidth : 65,
									border : false,
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									defaults : {
										xtype : "textfield",
										anchor : "92%",
										readOnly : true,
										allowBlank : false,
										emptyText : "需要进行查询"
									},
									items : [{
												fieldLabel : "身份证号",
												emptyText : "请输入有效的身份证号",
												readOnly : false,
												enableKeyEvents : true, // 允许响应键盘事件
												listeners : {
													"blur" : {
														fn : this.onSearchPerson,
														scope : this
													},
													"keypress" : {
														fn : this.onSearchPersonKeyUp,
														scope : this
													}
												}
											}, {
												fieldLabel : "原来公司",
												name : "jc.jcOldCompany"
											}, {
												fieldLabel : "原薪标号",
												name : "jc.jcOldMoneyId"
											}]
								}, {
									columnWidth : .33,
									layout : "form",
									labelWidth : 70,
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									defaults : {
										xtype : "textfield",
										anchor : "92%",
										readOnly : true,
										allowBlank : false,
										emptyText : "需要进行查询"
									},
									items : [{
												fieldLabel : "人员姓名",
												emptyText : "需要查询",
												name : "jc.pfName"
											}, {
												fieldLabel : "原来部门",
												name : "jc.jcOldBranch"
											}, {
												fieldLabel : "原薪标名称",
												name : "jc.jcOldMoneyName"
											}]
								}, {
									columnWidth : .33,
									layout : "form",
									labelWidth : 70,
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									defaults : {
										xtype : "textfield",
										anchor : "92%",
										readOnly : true,
										allowBlank : false,
										emptyText : "需要进行查询"
									},
									items : [{
												fieldLabel : "档案编号",
												name : "jc.pfFileId"
											}, {
												fieldLabel : "原来职业",
												name : "jc.jcOldJob"
											}, {
												fieldLabel : "原薪标金额",
												xtype : "numberfield",
												name : "jc.jcOldCountMoney"
											}]
								}]
					}, {
						xtype : "fieldset",
						title : "员工调动信息",
						layout : "column",
						autoHeight : true,
						items : [{
									columnWidth : .33,
									layout : "form",
									labelWidth : 65,
									border : false,
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									defaults : {
										xtype : "textfield",
										anchor : "92%",
										allowBlank : false,
										readOnly : true
									},
									items : [{
												fieldLabel : "现在公司",
												xtype : "combo",
												emptyText : "请选择",
												store : this.comboStoreGs,
												triggerAction : "all",
												displayField : "cfgValue",
												hiddenName : "jc.jcNewCompany"
											}, {
												fieldLabel : "现薪标名",
												xtype : "combo",
												emptyText : "请选择",
												triggerAction : "all", // 显示所有数据
												displayField : "miStandardName", // 要显示的值
												store : this.comboStoreMoneyStandard,
												hiddenName : "jc.jcNewMoneyName",
												listeners : {
													"select" : this.onMiStandardSelect,
													scope : this
												}
											}, {
												fieldLabel : "登记人",
												readOnly : false,
												emptyText : "请填写登记人",
												name : "jc.userAddName"
											}]
								}, {
									columnWidth : .33,
									layout : "form",
									labelWidth : 70,
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									defaults : {
										xtype : "textfield",
										anchor : "92%",
										readOnly : true,
										allowBlank : false
									},
									items : [{
												fieldLabel : "现在部门",
												readOnly : true,
												emptyText : "请选择",
												xtype : "combo",
												store : this.comboStoreBm,
												triggerAction : "all",
												displayField : "cfgValue",
												hiddenName : "jc.jcNewBranch"
											}, {
												fieldLabel : "现薪标号",
												readOnly : true,
												emptyText : "自动填写",
												name : "jc.jcNewMoneyId"
											}, {
												fieldLabel : "登记时间",
												value : new Date()
														.toLocaleString(),
												disabled : true
											}]
								}, {
									columnWidth : .33,
									layout : "form",
									labelWidth : 70,
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									defaults : {
										xtype : "textfield",
										anchor : "92%",
										readOnly : true,
										allowBlank : false
									},
									items : [{
												fieldLabel : "现在职位",
												xtype : "combo",
												emptyText : "请选择",
												store : this.comboStoreJob,
												triggerAction : "all",
												displayField : "cfgValue",
												hiddenName : "jc.jcNewJob"
											}, {
												fieldLabel : "现薪标金额",
												xtype : "numberfield",
												emptyText : "自动填写",
												name : "jc.jcNewCountMoney"
											}]
								}]
					}, {
						xtype : "fieldset",
						title : "员工调动说明",
						autoHeight : true,
						items : [{
									layout : "column",
									bodyStyle : "backgroundColor:#DFE8F6;",
									border : false,
									items : [{
												columnWidth : 1,
												layout : "form",
												labelWidth : 65,
												border : false,
												bodyStyle : "backgroundColor:#DFE8F6;",
												defaults : {
													xtype : "textarea",
													anchor : "96%",
													allowBlank : false
												},
												items : [{
															fieldLabel : "调用原因",
															emptyText : "请填写",
															name : "jc.jcCause"
														}, {
															fieldLabel : "备注",
															emptyText : "请填写",
															name : "jc.jcMemo"
														}]
											}]
								}]
					}],
			bbar : [{
						text : "查询员工档案",
						iconCls : "houfei-searchIcon",
						handler : this.onSearchPerson,
						scope : this
					}, "-", {
						text : "确认登记",
						iconCls : "houfei-addicon",
						handler : this.onConfirmAdd,
						scope : this
					}, "-", {
						text : "取消登记",
						iconCls : "houfei-tbarCancelIcon",
						handler : this.onCancelAdd,
						scope : this
					}]

		});
	},

	/**
	 * 确认登记按钮单击事件
	 */
	onConfirmAdd : function() {
		var _form = this.getForm();
		// 如果表单验证通过
		if (this.getForm().isValid()) {
			this.getForm().submit({
						url : "jobChange.do?operator=addJobChange",
						method : "post",
						waitTitle : "数据传输",
						waitMsg : "数据传输中,请稍候......",
						success : function() {
							Ext.Msg.alert("系统提示", "员工登记成功!");
							_form.reset();
						},
						failure : this.onAddFailure,
						scpoe : this
					});
		}
	},

	/**
	 * 登记失败
	 * 
	 * @param {}
	 *            _form
	 * @param {}
	 *            _action
	 */
	onAddFailure : function(_form, _action) {
		Ext.Msg.show({
					title : "系统提示",
					msg : "员工调动登记失败,请重新登记或与管理员联系!",
					buttons : Ext.Msg.OK,
					icon : Ext.Msg.INFO
				});
	},

	/**
	 * 取消登记按钮单击事件
	 */
	onCancelAdd : function() {
		this.getForm().reset();
	},

	/**
	 * (身份证号)键盘弹起事件
	 * 
	 * @param {}
	 *            _text
	 * @param {}
	 *            e
	 */
	onSearchPersonKeyUp : function(_text, e) {
		// 如果用户按下的键是回车键,那么就根据身份证号进行查询
		if (e.keyCode == Ext.EventObject.ENTER) {
			this.onSearchPerson();
		}
	},

	/**
	 * 查询人员档案信息
	 */
	onSearchPerson : function() {
		// 获取当前组件类型为textfield的集合
		var _items = this.findByType("textfield");
		// 获取身份证号
		var _pfIdCard = _items[0];
		// 如果验证通过
		if (_pfIdCard.isValid()) {
			Ext.Ajax.request({
						url : "personFile.do", // url
						method : "post", // post请求
						success : this.onSearchSuccess, // 请求成功回调函数
						failure : this.onSearchFailure, // 请求失败回调函数
						scope : this, // 作用域
						params : {
							operator : "showPersonFileByCondition",
							pfIdCard : _pfIdCard.getValue().trim()
						}
					});
		}
	},

	/**
	 * 请求(查询)成功回调函数(不代表业务成功)
	 * 
	 * @param {}
	 *            _res
	 */
	onSearchSuccess : function(_res) {
		// 获取服务端返回值
		var _restxt = _res.responseText;
		// 如果为空
		if (_restxt == "null") {
			Ext.Msg.show({
						title : "系统提示",
						msg : "无效的身份证号!",
						buttons : Ext.Msg.OK,
						icon : Ext.Msg.INFO
					});
		} else {
			// //////////////////////////////////////////////////////////////
			// 对服务端的返回值进行反序列化成为json对象
			var _orestxt = Ext.decode(_restxt);
			// 将其包装成一个Record
			var _record = new Ext.data.Record(_orestxt);
			// 员工姓名
			var _pfName = _record.get("pfName");
			// 获取档案编号
			var _pfFileId = _record.get("pfFileId");
			// 获取公司名
			var _pfCompany = _record.get("pfCompany");
			// 获取部门
			var _pfBranch = _record.get("pfBranch");
			// 获取职位
			var _pfJob = _record.get("pfJob");
			// 获取薪酬标准号
			var _miMoneyStandardId = _record.get("miMoneyStandardId");
			// 获取薪酬标准名
			var _miStandardName = _record.get("miStandardName");
			// 获取薪酬标准金额
			var _miCountMoney = _record.get("miCountMoney");
			// 获取所有类型为textfield的集合
			var _items = this.findByType("textfield");
			// //////////////////////////////////////////////////////////////
			_items[3].setValue(_pfName);
			// 设置档案编号
			_items[6].setValue(_pfFileId);
			// 设置原来公司
			_items[1].setValue(_pfCompany);
			// 设置原来部门
			_items[4].setValue(_pfBranch);
			// 设置原来职位
			_items[7].setValue(_pfJob);
			// 设置原来薪酬标准号
			_items[2].setValue(_miMoneyStandardId);
			// 设置原来薪酬标准名
			_items[5].setValue(_miStandardName);
			// 设置原来薪酬标准金额
			this.findByType("numberfield")[0].setValue(_miCountMoney);
		}
	},

	/**
	 * 请求失败(查询)回调函数
	 * 
	 * @param {}
	 *            _res
	 */
	onSearchFailure : function(_res) {
		Ext.Msg.alert("系统消息", "网络异常,请检查网络是否正常或与管理员联系!");
	},

	/**
	 * 薪酬标准下拉列表选择事件
	 * 
	 * @param {}
	 *            _combo
	 * @param {}
	 *            _r
	 * @param {}
	 *            _index
	 */
	onMiStandardSelect : function(_combo, _r, _index) {
		// 获取所有的类型为textfield组件的集合
		var _txtItems = this.findByType("textfield");
		// 获取所有的类型为numberfield组件的集合
		var _numItems = this.findByType("numberfield");
		// 获取薪酬标准号textfield的引用
		var _snTxt = _txtItems[9];
		// 获取薪酬标准金额numberfield的引用
		var _svTxt = _numItems[1];

		_snTxt.setValue(_r.get("miStandardId"));
		_svTxt.setValue(_r.get("miCountMoney"));
	}

});